home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2009 February
/
PCWFEB09.iso
/
Software
/
Resources
/
Chat & Communication
/
Digsby build 37
/
digsby_setup.exe
/
lib
/
xml
/
sax
/
saxutils.pyo
(
.txt
)
< prev
next >
Wrap
Python Compiled Bytecode
|
2008-10-13
|
11KB
|
308 lines
# Source Generated with Decompyle++
# File: in.pyo (Python 2.5)
import os
import urlparse
import urllib
import types
import handler
import xmlreader
try:
_StringTypes = [
types.StringType,
types.UnicodeType]
except AttributeError:
_StringTypes = [
types.StringType]
try:
from codecs import xmlcharrefreplace_errors
_error_handling = 'xmlcharrefreplace'
del xmlcharrefreplace_errors
except ImportError:
_error_handling = 'strict'
def __dict_replace(s, d):
for key, value in d.items():
s = s.replace(key, value)
return s
def escape(data, entities = { }):
data = data.replace('&', '&')
data = data.replace('>', '>')
data = data.replace('<', '<')
if entities:
data = __dict_replace(data, entities)
return data
def unescape(data, entities = { }):
data = data.replace('<', '<')
data = data.replace('>', '>')
if entities:
data = __dict_replace(data, entities)
return data.replace('&', '&')
def quoteattr(data, entities = { }):
entities = entities.copy()
entities.update({
'\n': ' ',
'\r': ' ',
'\t': ' ' })
data = escape(data, entities)
if '"' in data:
if "'" in data:
data = '"%s"' % data.replace('"', '"')
else:
data = "'%s'" % data
else:
data = '"%s"' % data
return data
class XMLGenerator(handler.ContentHandler):
def __init__(self, out = None, encoding = 'iso-8859-1'):
if out is None:
import sys as sys
out = sys.stdout
handler.ContentHandler.__init__(self)
self._out = out
self._ns_contexts = [
{ }]
self._current_context = self._ns_contexts[-1]
self._undeclared_ns_maps = []
self._encoding = encoding
def _write(self, text):
if isinstance(text, str):
self._out.write(text)
else:
self._out.write(text.encode(self._encoding, _error_handling))
def _qname(self, name):
if name[0]:
prefix = self._current_context[name[0]]
if prefix:
return prefix + ':' + name[1]
return name[1]
def startDocument(self):
self._write('<?xml version="1.0" encoding="%s"?>\n' % self._encoding)
def startPrefixMapping(self, prefix, uri):
self._ns_contexts.append(self._current_context.copy())
self._current_context[uri] = prefix
self._undeclared_ns_maps.append((prefix, uri))
def endPrefixMapping(self, prefix):
self._current_context = self._ns_contexts[-1]
del self._ns_contexts[-1]
def startElement(self, name, attrs):
self._write('<' + name)
for name, value in attrs.items():
self._write(' %s=%s' % (name, quoteattr(value)))
self._write('>')
def endElement(self, name):
self._write('</%s>' % name)
def startElementNS(self, name, qname, attrs):
self._write('<' + self._qname(name))
for prefix, uri in self._undeclared_ns_maps:
if prefix:
self._out.write(' xmlns:%s="%s"' % (prefix, uri))
continue
self._out.write(' xmlns="%s"' % uri)
self._undeclared_ns_maps = []
for name, value in attrs.items():
self._write(' %s=%s' % (self._qname(name), quoteattr(value)))
self._write('>')
def endElementNS(self, name, qname):
self._write('</%s>' % self._qname(name))
def characters(self, content):
self._write(escape(content))
def ignorableWhitespace(self, content):
self._write(content)
def processingInstruction(self, target, data):
self._write('<?%s %s?>' % (target, data))
class XMLFilterBase(xmlreader.XMLReader):
def __init__(self, parent = None):
xmlreader.XMLReader.__init__(self)
self._parent = parent
def error(self, exception):
self._err_handler.error(exception)
def fatalError(self, exception):
self._err_handler.fatalError(exception)
def warning(self, exception):
self._err_handler.warning(exception)
def setDocumentLocator(self, locator):
self._cont_handler.setDocumentLocator(locator)
def startDocument(self):
self._cont_handler.startDocument()
def endDocument(self):
self._cont_handler.endDocument()
def startPrefixMapping(self, prefix, uri):
self._cont_handler.startPrefixMapping(prefix, uri)
def endPrefixMapping(self, prefix):
self._cont_handler.endPrefixMapping(prefix)
def startElement(self, name, attrs):
self._cont_handler.startElement(name, attrs)
def endElement(self, name):
self._cont_handler.endElement(name)
def startElementNS(self, name, qname, attrs):
self._cont_handler.startElementNS(name, qname, attrs)
def endElementNS(self, name, qname):
self._cont_handler.endElementNS(name, qname)
def characters(self, content):
self._cont_handler.characters(content)
def ignorableWhitespace(self, chars):
self._cont_handler.ignorableWhitespace(chars)
def processingInstruction(self, target, data):
self._cont_handler.processingInstruction(target, data)
def skippedEntity(self, name):
self._cont_handler.skippedEntity(name)
def notationDecl(self, name, publicId, systemId):
self._dtd_handler.notationDecl(name, publicId, systemId)
def unparsedEntityDecl(self, name, publicId, systemId, ndata):
self._dtd_handler.unparsedEntityDecl(name, publicId, systemId, ndata)
def resolveEntity(self, publicId, systemId):
return self._ent_handler.resolveEntity(publicId, systemId)
def parse(self, source):
self._parent.setContentHandler(self)
self._parent.setErrorHandler(self)
self._parent.setEntityResolver(self)
self._parent.setDTDHandler(self)
self._parent.parse(source)
def setLocale(self, locale):
self._parent.setLocale(locale)
def getFeature(self, name):
return self._parent.getFeature(name)
def setFeature(self, name, state):
self._parent.setFeature(name, state)
def getProperty(self, name):
return self._parent.getProperty(name)
def setProperty(self, name, value):
self._parent.setProperty(name, value)
def getParent(self):
return self._parent
def setParent(self, parent):
self._parent = parent
def prepare_input_source(source, base = ''):
if type(source) in _StringTypes:
source = xmlreader.InputSource(source)
elif hasattr(source, 'read'):
f = source
source = xmlreader.InputSource()
source.setByteStream(f)
if hasattr(f, 'name'):
source.setSystemId(f.name)
if source.getByteStream() is None:
sysid = source.getSystemId()
basehead = os.path.dirname(os.path.normpath(base))
sysidfilename = os.path.join(basehead, sysid)
if os.path.isfile(sysidfilename):
source.setSystemId(sysidfilename)
f = open(sysidfilename, 'rb')
else:
source.setSystemId(urlparse.urljoin(base, sysid))
f = urllib.urlopen(source.getSystemId())
source.setByteStream(f)
return source